// 模型类型枚举
export enum ModelType {
  CHAT = 'chat', // 大语言模型
  EMBEDDING = 'embedding', // 向量模型
  RERANKING = 'reRanking', // 重排序模型
}

// 对接方式枚举
export enum ConnectionType {
  STANDARD = 'standard', // 标准对接
  CUSTOM = 'custom', // 自定义对接
}

// 模型提供商枚举
export enum ModelProvider {
  // 国际厂商
  OPENAI = 'openai', // OpenAI
  ANTHROPIC = 'anthropic', // Anthropic
  GOOGLE = 'google', // Google
  META = 'meta', // Meta
  MICROSOFT = 'microsoft', // Microsoft
  AMAZON = 'amazon', // Amazon
  IBM = 'ibm', // IBM
  NVIDIA = 'nvidia', // NVIDIA
  
  // 国内厂商
  BAIDU = 'baidu', // 百度
  ALIYUN = 'aliyun', // 阿里云
  TENCENT = 'tencent', // 腾讯
  ZHIPU = 'zhipu', // 智谱AI
  DEEPSEEK = 'deepseek', // DeepSeek
  MOONSHOT = 'moonshot', // 月之暗面
  MINIMAX = 'minimax', // MiniMax
  QIANWEN = 'qianwen', // 通义千问
  SPARK = 'spark', // 讯飞星火
  BAICHUAN = 'baichuan', // 百川智能
  ZEROONE = 'zeroone', // 零一万物
  OTHERS = 'others' // 其他
}

// 模型认证方式枚举
export enum AuthType {
  API_KEY = 'api_key', // API密钥
  OAUTH = 'oauth', // OAuth认证
  JWT = 'jwt', // JWT认证
  BASIC = 'basic', // Basic认证
  NONE = 'none' // 无需认证
}

// 模型状态枚举
export enum ModelStatus {
  ACTIVE = 'active', // 活跃
  INACTIVE = 'inactive', // 未激活
  DEPRECATED = 'deprecated', // 已弃用
  MAINTENANCE = 'maintenance', // 维护中
}

// 主表：模型
export interface Model {
  id: string;
  mark: string; // 模型唯一标识（英文数字下划线）
  modelType: ModelType; // 模型类型（大语言、向量模型、重排序模型）
  connectionType: ConnectionType; // 对接方式（自定义、标准）
  provider: string; // 提供商（对应 ChatProviderEnums）
  chatType: string; // 模型类型（对应 ChatTypeEnums、ScoringModelTypeEnum、VectorModelTypeEnum）
  isSystem: boolean; // 是否系统自带模型配置
  
  // 基础信息
  name: string; // 模型名称
  version?: string; // 模型版本
  status: string; // 模型状态
  
  // API配置
  apiUrl?: string; // 自定义模型的url地址
  apiKey?: string; // API密钥
  apiSecret?: string; // API密钥（部分固定模型需要）
  modelId?: string; // 自定义模型的标识
  authType:AuthType;
  
  // 向量模型专用
  dimension?: number; // 向量维度
  
  // 参数设置
  maxTokens?: number;
  temperature?: number;
  topP?: number;
  frequencyPenalty?: number;
  presencePenalty?: number;
  
  // 高级设置
  isEnabled: boolean;
  rateLimit?: number;
  timeout?: number;
  retryTimes?: number;
  retryInterval?: number;
  proxy?: string;
  
  // 时间信息
  createTime: string;
  updateTime: string;
  lastUsedTime?: string;
  usageCount?: number;
  
  headers?: Record<string, string>;
  params?: Record<string, any>;
  identifier?: string;
}

// 创建/编辑模型的表单值类型
export type ModelFormValues = Omit<Model, 'createTime' | 'updateTime' | 'lastUsedTime' | 'usageCount'>;